home *** CD-ROM | disk | FTP | other *** search
- /* $VER: AppLauncher.rexx 1.7 (26.9.98) (W) by Martin Steigerwald
- */
-
- PARSE ARG appname ' ' files
-
- OPTIONS RESULTS
-
- IF ~SHOW('l','rexxsupport.library') THEN CALL ADDLIB('rexxsupport.library',0,-30)
-
- configname='S:AppLauncher.cfg'
- cmdprefix='C:RUN <>NIL: '
-
- appmax=ReadConfig()
- IF appmax>0 THEN DO
- IF StartApp()=0 THEN DO
- SAY 'Something went wrong with "' || appname || '"!'
- END
-
- EXIT
-
- StartApp: PROCEDURE EXPOSE app. appname appmax cmdprefix files
- gefunden=0
- erfolg=0
- DO i=1 to appmax
- IF UPPER(appname) == UPPER(app.i.name) THEN DO
- gefunden=1
- LEAVE
- END
- END /* DO */
- IF gefunden=1 THEN DO
- a=RIGHT(app.i.pathname,1)
- IF (a~==':' & a~=='/') THEN DO
- app = app.i.pathname || "/" || app.i.filename
- END
- ELSE DO
- app = app.i.pathname || app.i.filename
- END
- alterpfad=PRAGMA('DIRECTORY')
- dummy=PRAGMA('DIRECTORY',app.i.pathname)
- alterstack=0
- IF app.i.stack > 4096 THEN DO
- alterstack=PRAGMA('STACK', app.i.stack)
- END
- IF ~SHOW('P', app.i.portname) THEN DO
- ADDRESS COMMAND cmdprefix || app
- ADDRESS COMMAND 'WaitForPort' app.i.portname
- END
- dummy=PRAGMA('DIRECTORY', alterpfad)
- ADDRESS VALUE app.i.portname
- files=STRIP(files)
- DO UNTIL files==''
- IF LEFT(files,1)=='"' THEN DO
- PARSE VAR files '"' file '"' files
- END
- ELSE DO
- PARSE VAR files file ' ' files
- END
- file=STRIP(file)
- IF UPPER(file)=="TOFRONT" THEN DO
- IF app.i.tofrontcmd ~== "" THEN DO
- app.i.tofrontcmd
- END
- ELSE DO
- SAY "Command to bring application to front is not configured!"
- END
- END
- ELSE DO
- IF app.i.filenameprefix ~== '' THEN DO
- app.i.loadcmd '"'app.i.filenameprefix || file'"'
- END
- ELSE DO
- app.i.loadcmd '"'file'"'
- END
- erfolg=1
- END
- END
- ADDRESS
- dummy=PRAGMA('DIRECTORY', alterpfad)
- IF alterstack > 0 THEN DO
- PRAGMA('STACK', alterstack)
- END
- END /* IF gefunden */
- ELSE DO
- SAY 'Didnt find application "' || appname || '" in my config file!'
- END /* ELSE */
- RETURN erfolg
-
- ReadConfig: PROCEDURE EXPOSE app. configname
- IF OPEN('configfile', configname, 'R') THEN DO
- i=0
- linenr=0
- DO UNTIL EOF('configfile')
- line=STRIP(READLN('configfile'))
- linenr=linenr+1
- SELECT
- WHEN LEFT(line,1)=='[' THEN DO
- i=i+1
- PARSE VAR line '[' app.i.name ']'
- app.i.pathname=''
- app.i.tofrontcmd=''
- app.i.loadcmd=''
- app.i.filenameprefix=''
- app.i.stack=0
- END /* WHEN */
- WHEN line == '' THEN DO
- NOP
- END /* WHEN */
- OTHERWISE DO
- PARSE VAR line option '=' setting
- option = UPPER(STRIP(option))
- setting = STRIP(setting)
- SELECT
- WHEN option == 'PORTNAME' THEN app.i.portname = setting
- WHEN option == 'TOFRONTCMD' THEN app.i.tofrontcmd = setting
- WHEN option == 'LOADCMD' THEN app.i.loadcmd = setting
- WHEN option == 'FILENAME' THEN app.i.filename = setting
- WHEN option == 'PATHNAME' THEN app.i.pathname = setting
- WHEN option == 'FILENAMEPREFIX' THEN app.i.filenameprefix = setting
- WHEN option == 'STACK' THEN app.i.stack = setting
- OTHERWISE SAY 'Unknown config option in line ' || linenr || '!'
- END /* SELECT */
- END /* OTHERWISE */
- END /* SELECT */
- END
- CLOSE('configfile')
- END
- ELSE DO
- SAY 'Couldnt load configfile "' || configname || '"!'
- END
- RETURN i
-
- FindApp: PROCEDURE EXPOSE app. configname
- erfolg=0
- IF EXISTS(configname) THEN DO
- erfolg=1
- END
-
- RETURN erfolg
-
-